#include<stdio.h>

/*
																free 函数
	函数概要：
		free 函数释放 ptr 参数指向的内存空间。该内存空间必须是由 malloc、calloc 或 realloc 函数申请的。
       （有借有还，再借不难，我们向内存申请空间使用完成之后，就需要将申请的空间归还给操作系统，那么我们就需要使用free函数。）
		否则，该函数将导致未定义行为。如果 ptr 参数是 NULL，不执行任何操作

		注意：该函数并不会修改 ptr 参数的值，所以调用后它仍然指向原来的地方（变为非法空间）


-----------------------------------------------------------------------------------------------------------------------------------------
	
	函数原型：
		#include <stdlib.h>
		...
		void free(void *ptr);

	参数解析：
		参数				含义
		ptr				指向将要释放的内存空间的地址

   用一句话解释就是如果想要释放申请的空间，就将接收申请空间的地址的指针填入即可（）；

   注：想要使用free函数释放申请内存空间，必须传递接收申请空间的地址的指针（即申请空间时返回值的地址，不能放入其他位置的地址）

-----------------------------------------------------------------------------------------------------------------------------------------



*/

//演示代码
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
   int i, length;
   char* buffer;

   printf("请输入字符串的长度：");
   scanf("%d", &length);

   buffer = (char*)malloc(length + 1); // 还要存放'\0'字符
   if (buffer == NULL)
   {
       printf("内存空间不足！\n");
       exit(1);
   }

   printf("请输入%d个字符的字符串：", length);

   getchar(); // 清除上一次输入残留的'\n'字符
   for (i = 0; i < length; i++)
   {
       buffer[i] = (char)getchar();
   }
   buffer[i] = '\0';

   printf("您输入的字符串是：%s\n", buffer);

   free(buffer);

   return 0;
}